package com.campus.app.service;

import com.campus.commons.entity.Student;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.entity.User;
import com.campus.commons.utils.Result;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * <p>
 * 学生信息表 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */
public interface StudentsService extends IService<Student> {
    /**
     * 根据userId获取学生
     * @param userId
     * @return
     */
    Student getStudentByUserId(Integer userId);

    /**
     * 判断学生是否存在通过姓名查询
     *
     * @param studentName
     * @return
     */
    Boolean existStudentByName(@NotNull String studentName);

    Integer existStudentByNameFromDepend(String name);

//   查询出所有学部[学习部]的成员；
    /**
     * 根据部门Id查询该部门所有学生
=======
    /**
     *    查询出所有学部[学习部]的成员；
>>>>>>> 5b8fa0f0da52d1c71bb4530ad3b25fdc7f6e40f8
     * @author 琪亚娜
     * @param deId
     * @return
     */
    Result<List<Student>> getStudentByDeId(Integer deId);



    /**
     * 获取所有的学生信息
     *
     * @return
     */
    Result<List<Student>> getAll(int page, int limit);


    /**
     * 复合查询
     * @param page
     * @param limit
     * @param student
     * @param start
     * @param end
     * @return
     */
    Result<List<Student>> getCompoundQuery(int page, int limit, Student student,String start,String end);

    /**
     * 获取一名用户
     *
     * @param id
     * @return
     * @author 一行瑠璃
     */
    Result<Student> getOneStudent(int id);

    /**
     * 更改student信息并更好user信息，
     * 如要使用请看好
     *
     * @param student
     * @param user
     * @return
     * @author 一行琉璃
     */
    Result updateStudentAndUser(Student student, User user);

    /**
     * 删除student信息和user信息
     * 使用此方法请先阅读先代码
     *
     * @param studentId
     * @param userId
     * @return
     * @author 一行琉璃
     */
    Result delUserAndStudent(int studentId, int userId);

    /**
     * 验证身份证是否存在
     *
     * @param idCard
     * @return
     * @author 一行琉璃
     */
    Boolean checkIdCardByIdCad(String idCard);

    /**
     * 添加学生信息
     *
     * @param user
     * @param student
     * @return
     * @author 一行琉璃
     */
    Result addStudentAndUser(User user, Student student);

    /**
     * 判断该学生是否是学社的
     * @param student
     * @return
     */
    boolean isDepartment(Integer student);
}
